﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SmartMedicalCare.Domain
{
    /// <summary>
    /// 轮播图表
    /// </summary>
    [Table("carousel")]
    public class CarouselModel
    {

        /// <summary>
        /// 【主键·自增】唯一标识每条轮播图记录
        /// 业务：数据库中每条轮播图有唯一ID，方便增删改查时精准定位。
        /// </summary>
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int CarouselId { get; set; }

        /// <summary>
        /// 【必填】轮播图标题
        /// 业务：展示在轮播图上的文字标题（如“2025体检优惠活动”），快速传递核心信息。
        /// </summary>
        [Required]
        [MaxLength(100)]
        public string Title { get; set; } = string.Empty;

        /// <summary>
        /// 【必填】图片路径
        /// 业务：轮播图的图片在服务器/CDN的存储路径（如`/static/carousel/activity.jpg`），前端据此加载图片。
        /// </summary>
        [Required]
        [MaxLength(255)]
        public string? ImageUrl { get; set; } = string.Empty;

        /// <summary>
        /// 【必填】跳转链接
        /// 业务：用户点击轮播图后，跳转到的目标页面（如医院活动页、科室详情页）。
        /// </summary>
        [Required]
        [MaxLength(255)]
        public string? JumpUrl { get; set; } = string.Empty;

        /// <summary>
        /// 【必填】生效时间
        /// 业务：轮播图开始展示的时间（如活动开始前1天配置，到活动当天自动显示）。
        /// </summary>
        [Required]
        public DateTime StartTime { get; set; }

        /// <summary>
        /// 【必填】失效时间
        /// 业务：轮播图停止展示的时间（如活动结束后，自动下线不再显示）。
        /// </summary>
        [Required]
        public DateTime EndTime { get; set; }

        /// <summary>
        /// 状态（1=启用，0=禁用）
        /// 业务：手动控制轮播图的“开关”（如临时紧急下线某条轮播图，无需删除数据）。
        /// </summary>
        public int Status { get; set; } = 1;

        /// <summary>
        /// 创建时间
        /// 业务：记录轮播图的创建时间，用于管理审计（追溯“谁什么时候添加了这条轮播图”）。
        /// </summary>
        public DateTime CreateTime { get; set; } = DateTime.Now;
        /// <summary>
        /// 逻辑删除标记：true=已删除，false=正常
        /// 业务：标记轮播图是否“逻辑删除”，物理数据仍保留在库中。
        /// </summary>
        public bool? IsDeleted { get; set; } = false;
        /// <summary>
        /// 排序
        /// </summary>
        public int Counts {  get; set; }
        /// <summary>
        /// 创建人
        /// </summary>
        public string CreateName {  get; set; }
    }
}
